home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Games Collection 1 / software vault.zip / software vault / CDR10 / XLIB06.ZIP / XLIBTL02 / XTSRMOUS.C < prev    next >
Text File  |  1992-11-19  |  3KB  |  158 lines

  1. /**************************************************************************/
  2. /*                                      */
  3. /*    T U R B O C  2.0              (Mouse services)                      */
  4. /*                                      */
  5. /*                by T. Gouthas                  */
  6. /**************************************************************************/
  7.  
  8. #include <dos.h>
  9. #include <stdio.h>
  10. #include <conio.h>
  11.  
  12. #define INVSCRNMASK 0xFFFF
  13. #define INVCURSMASK 0x7700
  14. #define MOUSE 51
  15. typedef enum ButtonType      { LeftButton,RightButton,MidButton } ButtonType;
  16. typedef enum MouseMode       { Hardware,Software }                MouseMode;
  17. typedef unsigned int             MouseDef[31];
  18. union                 REGS regs;
  19. struct SREGS              sregs;
  20. int                              MouseOK = 0;
  21. int                              NoButtons = 2;
  22. int                              MidPressed,RightPressed,LeftPressed;
  23. MouseDef                         Mymouse;
  24. int                              MouseX = 0, MouseY = 0;
  25.  
  26. void InitMouse()
  27. {
  28.    regs.x.ax = 0;
  29.    int86(MOUSE,®s,®s);
  30.    MouseOK = regs.x.ax;
  31.    NoButtons = regs.x.bx;
  32. }
  33.  
  34. void ShowMouse()
  35. {
  36.    regs.x.ax = 1;
  37.    int86(MOUSE,®s,®s);
  38. }
  39.  
  40. void HideMouse()
  41. {
  42.    regs.x.ax = 2;
  43.    int86(MOUSE,®s,®s);
  44. }
  45.  
  46. void MouseXY()
  47. {
  48.    regs.x.ax = 3;
  49.    int86(MOUSE,®s,®s);
  50.    MouseX = regs.x.cx/2;
  51.    MouseY = regs.x.dx;
  52.    LeftPressed =  (regs.x.bx & 1 == 1);
  53.    RightPressed = (regs.x.bx & 2 == 2);
  54.    MidPressed =   (regs.x.bx & 4 == 4);
  55. }
  56.  
  57. void MouseToXY(int xpos, int ypos)
  58. {
  59.    regs.x.ax = 4;
  60.    regs.x.cx = 2*(MouseX = xpos);
  61.    regs.x.dx = (MouseY = ypos);
  62.    int86(MOUSE,®s,®s);
  63. }
  64.  
  65. int MousePressCount(ButtonType button, int *status)
  66. {
  67.    regs.x.ax = 5;
  68.    regs.x.bx = button;
  69.    int86(MOUSE,®s,®s);
  70.    MouseX = regs.x.cx/2;
  71.    MouseY = regs.x.dx;
  72.    *status = regs.x.ax;
  73.    return regs.x.bx;
  74. }
  75.  
  76. int MouseReleaseCount(ButtonType button, int *status)
  77. {
  78.    regs.x.ax = 6;
  79.    regs.x.bx = button;
  80.    int86(MOUSE,®s,®s);
  81.    MouseX = regs.x.cx/2;
  82.    MouseY = regs.x.dx;
  83.    *status = regs.x.ax;
  84.    return regs.x.bx;
  85. }
  86.  
  87. void MouseXRange(int x1, int x2)
  88. {
  89.    regs.x.ax = 7;
  90.    regs.x.cx = x1*2;
  91.    regs.x.dx = x2*2;
  92.    int86(MOUSE,®s,®s);
  93. }
  94.  
  95. void MouseYRange(int y1, int y2)
  96. {
  97.    regs.x.ax = 8;
  98.    regs.x.cx = y1;
  99.    regs.x.dx = y2;
  100.    int86(MOUSE,®s,®s);
  101. }
  102.  
  103. void DefineGraphMouse(MouseDef mouse, int xhot, int yhot)
  104. {
  105.    regs.x.ax = 9;
  106.    regs.x.bx = xhot;
  107.    regs.x.cx = yhot;
  108.    regs.x.dx = FP_OFF(&mouse);
  109.    sregs.es = FP_SEG(&mouse);
  110.    int86x(MOUSE,®s,®s,&sregs);
  111. }
  112.  
  113. void DefineTextMouse(MouseMode mode, int scrnmask, int cursormask)
  114. {
  115.    regs.x.ax = 10;
  116.    regs.x.bx = mode;
  117.    regs.x.cx = scrnmask;
  118.    regs.x.cx = cursormask;
  119.    int86(MOUSE,®s,®s);
  120. }
  121.  
  122. void ReadMouseMickey(int *Xspeed, int *Yspeed)
  123. {
  124.    regs.x.ax = 11;
  125.    int86(MOUSE,®s,®s);
  126.    *Xspeed = regs.x.cx;
  127.    *Yspeed = regs.x.dx;
  128. /*
  129.    if Xspeed > 0 then moving in positive x direction
  130.    if Yspeed > 0 then moving in positive y direction
  131. */
  132. }
  133.  
  134.  
  135.  
  136.  
  137. void SetMouseMickey(int Xspeed, int Yspeed)
  138. {
  139.    regs.x.ax = 15;
  140.    regs.x.cx = (unsigned) Xspeed;
  141.    regs.x.dx = (unsigned) Yspeed;
  142.    int86(MOUSE,®s,®s);
  143. }
  144.  
  145. void TextCursorOff()
  146. {
  147.    regs.x.cx = 0x2000;
  148.    regs.x.ax = 0x0100;
  149.    int86(0x10,®s,®s);
  150. }
  151.  
  152. void TextCursorOn()
  153. {
  154.    regs.x.cx = 0x0C0D;
  155.    regs.x.ax = 0x0100;
  156.    int86(0x10,®s,®s);
  157. }
  158.